/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Text, TextArea, BlobInputList, InputDatalist, InputIdProvider,} from "customize-easy-ui-component";
import {
    InspectRecordLayout, InternalItemProps, useItemInputControl,
} from "../../common/base";
import {useMeasureInpFilter} from "../../common/hooks";
import { objNestSet} from "../../../common/tool";

export const 检验结果选=['√','——','×'];

export interface Props extends InternalItemProps {
    label: string;
    // config: ( (orc:any)=>EachMeasureCritConfig[][] ) | EachMeasureCritConfig[][];
    iAname?: string[];           //附加的存储那些字段     ，'观测备注'
}
//新的通用配置模型
//标题区最大列数确定的：总体每一行配置如下的[name,titl[{t:'',s: 3}],item,unit]形式；其中titl可变的长度。t是文本,s是跨越几行的TD数默认=1。unit默认='';item=必须有的主标题描述。
//这里第二字段 配置 [],和 [{} ], 不一样的，前者2占列，后者只占一列。
export const item宏观焊接 = [
    ['焊接头', [{t:'结构检查',s:6}], '罐体的焊接接头设计及焊缝布置', '符合GB18564.1-2019标准5.2.15、7.2.2、7.2.3条要求'],
    ['隔仓板', [{}], '封头、隔仓板', '符合GB18564.1-2019标准5.1.3、5.2.15、7.2.2条要求'],
    ['横截面', [{}], '罐体横截面形式', '符合GB18564.1-2019标准5.2.1、5.2.13条要求'],
    ['防波板', [{}], '防波板结构', '符合GB18564.1-2019标准5.2.13、5.2.15条要求'],
    ['阀门阀', [{}], '管路阀门阀体材质、管路布置', '符合GB18564.1-2019标准5.3条要求'],
    ['装卸口', [{}], '装卸管路系统设置及装卸口设置', '符合GB18564.1-2019标准5.4条要求'],
    ['几何尺', [{t:'几何尺寸检查',s:11}], '罐体容积', '与出厂文件标注公差≤3%'],
    ['允许充', [{}], '最大允许充装量', '≤罐车的额定载质量×1.03'],
    ['人孔', [{}], '人孔', '人孔直径≥500mm圆孔；或≥500×400mm椭圆孔'],
    ['筒节长', [{}], '单个筒节长度', '≥300mm'],
    ['同纵缝', [{}], '同一筒节的纵焊缝距离', '≥500mm'],
    ['邻纵缝', [{}], '相邻筒节的纵焊缝距离', '≥100mm'],
    ['纵错边', [{}], '纵焊缝最大对口错边量', '≤δs/4mm，且≤1.5mm（金属罐体）'],
    ['环错边', [{}], '环焊缝最大对口错边量', '≤δs/4mm，且≤1.5mm（金属罐体）'],
    ['纵棱角', [{}], '纵焊缝最大棱角度', '≤5mm且当δs＞6mm时，≤（δs/10+2）（金属罐体）'],
    ['环棱角', [{}], '环焊缝最大棱角度', '≤5mm且当δs＞6mm时，≤（δs/10+2）（金属罐体）'],
    ['咬边', [{}], '咬边', '符合GB18564.1-2019标准7.2.3.6条要求'],
    ['铭牌', [{t:'罐体外观检验',s:9}], '铭牌', '完好、符合GB18564.1-2019标准10.3的要求'],
    ['标志', [{}], '标志的设置', '符合GB18564.1-2019标准10条要求'],
    ['裂纹', [{}], '本体裂纹、变形、损伤情况', '无裂纹、无变形、无损伤（罐体内外表面）'],
    ['泄漏', [{}], '外表面及各接口是否泄漏', '无泄漏'],
    ['注入盖', [{}], '人口盖和液体注入盖', '紧固良好、密封良好'],
    ['各管路', [{}], '各管路', '无机械损伤、无堵塞'],
    ['加强圈', [{}], '防波板、隔仓板及加强圈 ', '无裂纹、无变形、无损伤（罐体内部）'],
    ['扶梯', [{}], '扶梯、操作平台、护栏', '无掉焊、无破损'],
    ['保温层', [{}], '保温层', '无破损、无脱落'],
    ['底盘连', [{t:'罐体与底盘连接检查',s:4}],'罐体与底盘连接牢固', '紧固螺栓无腐蚀、无松动、无弯曲变形'],
    ['缓胶垫', [{}], '罐体与底盘连接缓冲胶垫', '齐整完好，无错位、无变形、无老化、无残缺。'],
    ['支座', [{}], '罐体支座或其垫板', '无裂纹，连接牢固'],
    ['拉紧带', [{}], '拉紧带', '无腐蚀、无开裂，连接牢固'],
];

export const itemA宏观焊接: string[] = ['宏观结果', ];
item宏观焊接.forEach(([name, title, initIsp], i: number) => {
    itemA宏观焊接.push(name as string);
});

/**非正常的观测数据的表格；     @两个配置杂交混合的。
 * 必须拆解前俩个，然后插入一句描述的： 需要一个node插入点的；
 * “制动性能测量仪”区域的： 修正值:采用自动计算做法。
 * */
export const Macroscopic =
    React.forwardRef((
        {children, show, alone = true, refWidth, label, iAname,}: Props, ref
    ) => {
        let oldTitle1: any;
        let oldTitle2: any;
        const {inp, setInp} = useItemInputControl({ref});
        //const {render, itemObservation, itemObservationA,} = useMeasureListCrit(inp, setInp, config制动距离, false, false);
        const itemA = React.useMemo(() => {
            return [ ...iAname ?? [], ...itemA宏观焊接];
        }, [ iAname]);
        const [getInpFilter] = useMeasureInpFilter(null, itemA,);
        // const resulName = (items空载制动[0][0] ?? '仪一往') as string;         //用制动性能测量仪:的检验结果，对应存储名；
        return (
            <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                                 alone={alone} label={label}>
                <Text variant="h5">{label}：</Text>
                {item宏观焊接.map(([name, titlps, item, unit]: any, i: number) => {
                    //前缀可支持三个附加列配置的；
                    const [{t: title}, more2, more3] = titlps?.length > 0 ? titlps : ([{}] as any);
                    const {t: title2} = more2 || {};
                    const {t: title3} = more3 || {};
                    oldTitle1 = titlps?.length >= 1 ? (title ? title : oldTitle1) : '';
                    oldTitle2 = titlps?.length >= 2 ? (title2 ? title2 : oldTitle2) : '';
                    return (<React.Fragment key={i}>
                        <div css={{display: 'flex', flexWrap: 'wrap', alignItems: 'center'}}>
                            <Text>项目{i + 1} {title ?? oldTitle1} - {title2 ?? oldTitle2} {'>'} {title3} {title3 && '>'} {item}：</Text>
                            <Text>{unit}；</Text>
                            &nbsp;
                            <div>
                                检验结果
                                <InputIdProvider>
                                    <InputDatalist value={(inp?.[name]?.r) || ''} datalist={检验结果选}
                                                   style={{display: 'inline-flex', width: '11rem'}}
                                                   onListChange={v => objNestSet(name, 'r', v || undefined, inp, setInp)}/>
                                </InputIdProvider>
                            </div>
                            <div css={{display: 'inline-flex',alignItems: 'center'}}>
                                &nbsp;备注
                                <BlobInputList value={inp?.[name]?.m || ''} datalist={['见结果栏']}
                                               style={{display: 'inline-flex', width: '12rem'}} rows={1}
                                               onListChange={v => objNestSet(name, 'm', v || undefined, inp, setInp)}/>
                            </div>
                        </div>
                    </React.Fragment>);
                })}
                宏观检验报告-结果：
                <TextArea  value={inp?.宏观结果 ||''} rows={3}
                           onChange={e => setInp({ ...inp, 宏观结果: e.currentTarget.value||undefined}) } />
                {children}
            </InspectRecordLayout>
        );
    });
